/**
 * 这个js是渠道的js，跟huadong.js是有区别的，有很大的区别啊你妹啊
 * 这两个js插件有问题请联系guokenye
 * 
 * @param
 * @returns {___obj0}
 */
function huadong(id){
	
	var obj=new Object();
	obj._e=$("#"+id);
	obj._ul=$("#"+id+" ul");
	obj._lis=new Array();
	obj._huakuai=document.createElement("div");
	obj._pre=document.createElement("a");
	obj._pre.id="_huadong_pre_a";
	obj._pre.href="javascript:void(0)";
	obj._next=document.createElement("a");
	obj._next.id="_huadong_next_a";
	obj._next.href="javascript:void(0)";
	//obj._selDiv=document.createElement("DIV");
	//obj._sel=document.createElement("SELECT");
	obj._size=0;//一行容纳几个
	obj._row=1;//行
	
	obj._ul_left;//ul相对于div的左偏移量
	obj._page=false;
	
	//========================================
	
	//========================================
	$(obj._e).addClass("HUADONG");
	$(obj._huakuai).addClass("HUADONG_huakuai");
	//$(obj._selDiv).addClass("HUADONG_selDiv");
	
	
	if(!$(obj._e)[0] || !obj._ul[0]){
		return;
	}
	
	//$(obj._e).append(obj._selDiv);
	//$(obj._selDiv).append(obj._sel);
	
	obj._ul_left=obj._ul.position().left;
	var ul_width=obj._ul.width();
	var ul_height=obj._ul.height();
	var lis=$("#"+id+" ul li");
	var itemWidth=lis.width();
	_loadItem(lis);
	
	$(obj._e).prepend(obj._huakuai);
	_go(0,true,false);
	
	
	function _nextFun(){

		var startIndex;
		if(obj._size*obj._row>=obj._lis.length){
			startIndex=0;
		}else{
			startIndex=obj._size*obj._row;
		}
		_itemsToggle(startIndex,obj._size);
	}
	function _preFun(){
		var startIndex;
		if(obj._row>1){
			startIndex=((obj._row-1)-1)*obj._size;
			
		}else if(obj._row==1){
			var lastSize=parseInt(obj._lis.length%obj._size);
			startIndex=obj._lis.length-(lastSize!=0?lastSize:obj._size);
			startIndex=(startIndex<0?0:startIndex);
		}
		_itemsToggle(startIndex,obj._size);
	}
	
	/**
	 * 鼠标到达
	 * @param item
	 */
	function _itemMouseOver(item){
		_go(item._index);
	}
	/**
	 * 鼠标离开
	 * @param item
	 */
	function _itemMouseOut(item){
		_go(obj._huakuai._index,true);
	}
	/**
	 * 鼠标选中
	 * @param index
	 */
	function _itemChoose(index){
		_go(index,true,false);
	}
	/**
	 * 菜单切换
	 * @param startIndex
	 * @param maxSize
	 */
	function _itemsToggle(startIndex,maxSize){
		if(startIndex<0 || maxSize<1){return;}
		for(var i=0;i<obj._lis.length;i++){
			if(i>=startIndex && i<startIndex+maxSize){
				$(obj._lis[i]).show("fast");
			}else{
				$(obj._lis[i]).hide("fast");
			}
			
		}
		_go(startIndex,true,true,3000);
	}
	/**
	 * 滑块复位或者去到指定位置
	 * choose，是否固定
	 * doway，是否执行滑块下面的方法
	 * timeOut ,延迟多久执行滑块下面的方法
	 */
	function _go(index,choose,doway,timeOut){
		
		var old=obj._huakuai._index;
		obj._row=parseInt(index/obj._size)+1;
		var huaikuai_left=(index-((obj._row-1)*obj._size))*itemWidth+obj._ul_left;
		$(obj._huakuai).stop();
		if(old!=index){//此次动作为滚动到新位置，需要恢复老位置的css
			$(obj._lis[old]).removeClass("itemChoosed");
			$(obj._lis[old]).addClass("item");
		}
		if(choose){//选中
			try{
				clearTimeout(_go._t);
				//alert("清除上一个方法");
			}catch(e){}
			obj._huakuai._index=index;
			$(obj._sel).val(index);
			$(obj._lis[index]).removeClass("item");
			$(obj._lis[index]).addClass("itemChoosed");
		}
		
		$(obj._huakuai).animate({//动画效果
			"left":huaikuai_left+"px"
		},200,function(){//
			if(doway){
				
				if(typeof timeOut!="number"){
					timeOut=0;
				}
				_go._t=setTimeout(function(){
					
					if(obj._huakuai._index!=index){return;}
					//alert("yes");
					
					//if(obj._lis[index]._aFun){
						//obj._lis[index]._aFun();
					//}
					//跟以前不一样，不会去代理链接的方法，这里直接触发,上面注释的是代理方法，这里不能用
					try{
						var a=$(obj._lis[index]).children("a")[0];
						if(a && a.onclick){
							a.onclick();
						}
					}catch(e){alert(e);}
				},timeOut);
			}
		});
		
		
		
	}
	/**
	 * 载入item
	 */
	function _loadItem(lis){
		obj._lis=new Array();
		$(lis).each(function(index){
			
			this._index=index;
			$(this).addClass("item");
			obj._lis.push(this);
			$(this).mouseover(function(){
				_itemMouseOver(this);
			}).mouseout(function(){
				_itemMouseOut(this);
			}).click(function(){
				
			});
			
			var a=$(this).children("a")[0];
			a._index=index;
			var a2=$(this).children("a")[1];
			if(a2){
				a2._index=index;
			}
			
		});
		
		if(obj._lis.length==0){
			return;
		}
		
		obj._size=parseInt(ul_width/itemWidth);//一行可容纳的li数量
		
		if(obj._size<obj._lis.length){
			for(var i=obj._size;i<obj._lis.length;i++){
				$(obj._lis[i]).hide();
			}
			$(obj._e).prepend(obj._pre);
			$(obj._e).append(obj._next);
			if(obj._page==false){
				if(!obj._next.onclick){
					$(obj._next).click(function(){
						_nextFun();
					});
				}
				if(!obj._pre.onclick){
					$(obj._pre).click(function(){
						_preFun();
					});
				}
				obj._page=true;
			}
			
		}else{
			$(obj._pre).remove();
			$(obj._next).remove();
			obj._page=false;
		}
	}
	
	
	//================================================api
	/**
	 * 去到哪个item
	 */
	obj.to=function(index,doway){
		if(index<0 || index>obj._lis.length){return;}
		var startIndex=index-parseInt(index%obj._size);
		for(var i=0;i<obj._lis.length;i++){
			if(i>=startIndex && i<startIndex+obj._size){
				$(obj._lis[i]).show("fast");
			}else{
				$(obj._lis[i]).hide("fast");
			}
			
		}
		_go(index,true,doway);
	};
	obj.toFirst=function(doway){
		obj.to(0,doway);
	}
	obj.toLast=function(doway){
		obj.to(obj._lis.length-1,doway);
	}
	
	
	/**
	 * 添加一个或多个item
	 */
	obj.add=function(lis,index){
		lis=!lis?[]:lis;
		var oldlis=obj._lis;//老的lis
		//var newlis=oldlis.slice(0,1).concat(lis,oldlis.slice(1));
		var newlis=oldlis.concat(lis);
		//alert(newlis.length);
		_loadItem(newlis);
		//_go(3);
	}
	
	obj.remove=function(index){
		if(index<0 || index>=obj._lis.length){return;}
		var oldlis=obj._lis;//老的lis
		var newlis=oldlis.slice(0,index).concat(oldlis.slice(index+1));
		//删除老元素
		$(oldlis[index]).remove();
		_loadItem(newlis);
	}
	
	
	/**
	 * 刷新
	 */
	obj.fresh=function(){
		alert("准备刷新滑动数据");
		$(obj._huakuai).remove();
		$(obj._pre).remove();
		$(obj._next).remove();
		obj=new huadong(id);
		alert("刷新完毕");
		return obj;
	}
	
	return obj;
}